package com.xingzhi.shortvideosharingplatform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xingzhi.shortvideosharingplatform.dto.VideoFavoriteDTO;
import com.xingzhi.shortvideosharingplatform.model.VideoFavorite;

import java.util.List;

public interface VideoFavoriteService extends IService<VideoFavorite> {
    
    /**
     * 添加视频到收藏夹，支持同时添加到多个收藏夹
     * @param favoriteDTO 收藏信息，包含多个收藏夹ID
     * @return 是否收藏成功
     */
    boolean addVideoToFolder(VideoFavoriteDTO favoriteDTO);
    
    /**
     * 取消收藏（从特定收藏夹中取消）
     * @param userId 用户ID
     * @param videoId 视频ID
     * @param folderId 收藏夹ID
     * @return 是否取消成功
     */
    boolean removeVideoFromFolder(Long userId, Long videoId, Long folderId);
    
    /**
     * 取消视频的所有收藏（从所有收藏夹中取消）
     * @param userId 用户ID
     * @param videoId 视频ID
     * @return 是否取消成功
     */
    boolean removeAllVideoFavorites(Long userId, Long videoId);
    
    /**
     * 获取收藏夹中的视频ID列表
     * @param folderId 收藏夹ID
     * @return 视频ID列表
     */
    List<Long> getVideoIdsByFolderId(Long folderId);
    
    /**
     * 检查视频是否已经被收藏到指定收藏夹
     * @param userId 用户ID
     * @param videoId 视频ID
     * @param folderId 收藏夹ID
     * @return 是否已收藏
     */
    boolean isVideoInFolder(Long userId, Long videoId, Long folderId);
    
    /**
     * 检查用户是否收藏了视频（不考虑具体收藏夹）
     * @param userId 用户ID
     * @param videoId 视频ID
     * @return 是否已收藏
     */
    boolean isVideoFavorited(Long userId, Long videoId);
    
    /**
     * 获取用户收藏视频的所有收藏夹ID
     * @param userId 用户ID
     * @param videoId 视频ID
     * @return 收藏夹ID列表
     */
    List<Long> getFolderIdsByUserAndVideo(Long userId, Long videoId);
} 